package versao6;

import javax.swing.JFileChooser;
import javax.swing.JOptionPane;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;

public class LerCorridas {

    private File[] diretorio;
    private ArrayList<Corrida> corrida = new ArrayList<>();
    String nomeCorridasDat;

    private ArrayList<Posicao> posicao = new ArrayList<>();
    String nomePosicoesDat;

    public String getNomeCorridasDat() {
        return nomeCorridasDat;
    }

    public void abrir() {
        JFileChooser escolha = new JFileChooser();
        escolha.setDialogTitle("Escolha os arquivos corrida.txt");
        escolha.setMultiSelectionEnabled(true);

        int retorno = escolha.showOpenDialog(null);

        if (retorno == JFileChooser.APPROVE_OPTION) {
            diretorio = escolha.getSelectedFiles();

            for (File d : diretorio) {
                System.out.println(d.getPath());
            }

        } else {
            JOptionPane.showMessageDialog(escolha,
                    "Arquivo(s) não selecionado(s)", "Erro",
                    JOptionPane.ERROR_MESSAGE);
            System.exit(1);
        }
    }

    public void ler() {
        Corrida c;
        Posicao p;

        for (File d : diretorio) {
            try {

                FileReader fileReader = new FileReader(d.getPath());

                BufferedReader bufferedReader = new BufferedReader(fileReader);

                String linha = "";

                c = new Corrida();

                linha = bufferedReader.readLine();
                String[] vet1 = linha.split(":");
                c.setNumCorrida(Integer.parseInt(vet1[1]));

                linha = bufferedReader.readLine();
                String[] vet2 = linha.split(":");
                c.setNumVoltasRealizadas(Integer.parseInt(vet2[1]));

                while ((linha = bufferedReader.readLine()) != null) {
                    String[] vet3 = linha.split(";");

                    p = new Posicao();

                    p.setPosicaoCorrida(Integer.parseInt(vet3[0]));
                    p.setNumCarro(Integer.parseInt(vet3[1]));

                    posicao.add(p);
                }

                corrida.add(c);

                fileReader.close();
                bufferedReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }

    public void escreverCorrida() {
        nomeCorridasDat = "corridas.dat";

        try {
            ObjectOutputStream ostream = null;
            try {
                ostream = new ObjectOutputStream(new FileOutputStream(nomeCorridasDat));
                ostream.writeObject(corrida);

            } finally {
                if (ostream != null) {
                    ostream.close();
                }
            }
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }

    public void escreverPosicao() {
        nomePosicoesDat = "posicoes.dat";

        try {
            ObjectOutputStream ostream = null;
            try {
                ostream = new ObjectOutputStream(new FileOutputStream(nomePosicoesDat));
                ostream.writeObject(posicao);

            } finally {
                if (ostream != null) {
                    ostream.close();
                }
            }
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }
}
